package BL;

import com.toedter.calendar.JDateChooser;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;



import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class BLValidaciones
{
//    public InputVerifier soloNumeros;
    public KeyListener soloNumeros;
    public KeyListener soloNumerosReales;
    
    public BLValidaciones ()
    {
        soloNumeros = new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
                if (!(e.getKeyChar() >= '0' && e.getKeyChar() <= '9'))
                    e.consume();
            }

            @Override
            public void keyPressed(KeyEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void keyReleased(KeyEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }
            
        };
        
        soloNumerosReales = new KeyListener() {

            @Override
            public void keyTyped(KeyEvent ke) 
            {            
                String cadena = "1234567890.";
                if (!cadena.contains(ke.getKeyChar()+""))
                    ke.consume();
                
//                JTextField txtdato = (JTextField)ke.getSource();
//                char caracteres [] = txtdato.getText().toCharArray();
//                int cuenta = 0;
//                for(int i=0;i<caracteres.length;i++)
//                    if(caracteres[i] == '.')
//                        cuenta ++;
//                if(cuenta > 0)
//                    ke.setKeyChar('');
            }

            @Override
            public void keyPressed(KeyEvent ke) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void keyReleased(KeyEvent ke) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }
        };

//        soloNumeros = new InputVerifier() {
//
//            @Override
//            public boolean verify(JComponent input) {
//                CharSequence caracteres = "0123456789";
//                JTextField txtDatos = (JTextField) input;
//                String cadena = txtDatos.getText();
//                // Aqui verificamos si cadena es correcta y devolvemos
//                if (cadena.contains(caracteres)) 
//                    return true;
//                else 
//                {
//                    txtDatos.setText("");
//                    return false;
//                }
//            }
//        };
    }
    
    //metodo para validar correo electronio
    public boolean isEmail(String correo) {
        Pattern pat = null;
        Matcher mat = null;
        pat = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
        mat = pat.matcher(correo);
        if (mat.find()) {
            //System.out.println("[" + mat.group() + "]");
            return true;
        }else{
            return false;
        }
    }
    
    public boolean validarFecha(JDateChooser selectorFecha){
         
         if (selectorFecha.getDate() == null)
             return false;
         else{
                 //JOptionPane.showMessageDialog(null,,
                   //                           "Información",JOptionPane.INFORMATION_MESSAGE);
             
             String añoStr = selectorFecha.getCalendar().get(Calendar.YEAR)+"";
             String mesStr = selectorFecha.getCalendar().get(Calendar.MONTH)+1+"";
             String diaStr = selectorFecha.getCalendar().get(Calendar.DAY_OF_MONTH)+"";
             
             String fechaStr;
             if (diaStr.length()==1)
                fechaStr = añoStr+mesStr+"0"+diaStr;
             else
                 fechaStr = añoStr+mesStr+diaStr;
                 
             int diasFecha = Integer.parseInt(fechaStr);
             
             Calendar fechaActual = Calendar.getInstance();
             String añoActualStr = fechaActual.get(Calendar.YEAR)+"";
             String mesActualStr = fechaActual.get(Calendar.MONTH)+1+"";
             String diaActualStr = fechaActual.get(Calendar.DAY_OF_MONTH)+"";
             
             String fechaActualStr;
             if (diaActualStr.length()==1)
                fechaActualStr = añoActualStr+mesActualStr+"0"+diaActualStr;
             else
                 fechaActualStr = añoActualStr+mesActualStr+diaActualStr;
             
             int diasActualFecha = Integer.parseInt(fechaActualStr);
             
             if (diasActualFecha < diasFecha ){
                  JOptionPane.showMessageDialog(null,"La fecha de nacimiento no puede ser mayor que la fecha actual","Error",JOptionPane.ERROR_MESSAGE);
                  return false;
             }
             else if (diasActualFecha - diasFecha < 180000){
                  JOptionPane.showMessageDialog(null,"El contacto debe ser mayor de edad",
                                              "Error",JOptionPane.ERROR_MESSAGE);
                  return false;
             }                 
             else 
                 return true;
                 
             
                     
         }
         
         
      
    }
    
    public boolean validarFechaIngreso(JDateChooser selectorFecha){
         
         if (selectorFecha.getDate() == null)
             return false;
         else{
                 //JOptionPane.showMessageDialog(null,,
                   //                           "Información",JOptionPane.INFORMATION_MESSAGE);
             
             String añoStr = selectorFecha.getCalendar().get(Calendar.YEAR)+"";
             String mesStr = selectorFecha.getCalendar().get(Calendar.MONTH)+1+"";
             String diaStr = selectorFecha.getCalendar().get(Calendar.DAY_OF_MONTH)+"";
             
             String fechaStr;
             if (diaStr.length()==1)
                fechaStr = añoStr+mesStr+"0"+diaStr;
             else
                 fechaStr = añoStr+mesStr+diaStr;
                 
             int diasFecha = Integer.parseInt(fechaStr);
             
             Calendar fechaActual = Calendar.getInstance();
             String añoActualStr = fechaActual.get(Calendar.YEAR)+"";
             String mesActualStr = fechaActual.get(Calendar.MONTH)+1+"";
             String diaActualStr = fechaActual.get(Calendar.DAY_OF_MONTH)+"";
             
             String fechaActualStr;
             if (diaActualStr.length()==1)
                fechaActualStr = añoActualStr+mesActualStr+"0"+diaActualStr;
             else
                 fechaActualStr = añoActualStr+mesActualStr+diaActualStr;
             
             int diasActualFecha = Integer.parseInt(fechaActualStr);
             
             if (diasActualFecha < diasFecha ){
                  JOptionPane.showMessageDialog(null,"La fecha de ingreso no puede ser mayor que la fecha actual","Error",JOptionPane.ERROR_MESSAGE);
                  return false;
             }
             
             else 
                 return true;
                 
             
                     
         }
    }
    
    public String validarSqlInjection (String cadena)
    {
        String cadenaSQL = "";
        cadenaSQL = cadena.replace("'", "''");
        return cadenaSQL;
    }   
}
